package com.cy.embeddingdemo.testAgent;

import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import dev.langchain4j.model.ollama.OllamaChatModel;
import dev.langchain4j.model.ollama.OllamaEmbeddingModel;
import dev.langchain4j.model.ollama.OllamaStreamingChatModel;
import dev.langchain4j.model.openai.OpenAiEmbeddingModel;
import dev.langchain4j.model.openai.OpenAiStreamingChatModel;
import dev.langchain4j.model.output.Response;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@Slf4j
@RequestMapping("ollama")
@RestController
public class OllamaController {

    // @Resource
    // public OllamaChatModel ollamaChatModel;
    //
    // @Resource
    // public OllamaStreamingChatModel streamingChatModel;
    //
    // @Resource
    // public OpenAiEmbeddingModel embeddingModel;
    //
    // @RequestMapping("chat")
    // public String chat() {
    //
    //     return ollamaChatModel.chat("你好你是谁");
    //
    // }
    // // @RequestMapping("stream/chat")
    // @RequestMapping(value = "stream/chat",produces = "text/stream;charset=UTF-8")
    // public Flux<String> stream(@RequestParam String prompt) {
    //
    //     return Flux.create(emitter -> {
    //
    //         streamingChatModel.chat(prompt, new StreamingChatResponseHandler() {
    //             @Override
    //             public void onPartialResponse(String s) {
    //                 emitter.next(s);
    //             }
    //
    //             @Override
    //             public void onCompleteResponse(ChatResponse chatResponse) {
    //                 emitter.complete();
    //             }
    //
    //             @Override
    //             public void onError(Throwable throwable) {
    //                 emitter.error(throwable);
    //
    //             }
    //         });
    //
    //
    //     });
    //
    //
    //
    // }
    //
    // @RequestMapping("embedding")
    // public String embedding(@RequestParam String text) {
    //
    //     Embedding content = embeddingModel.embed(text).content();
    //     System.out.println(content.toString());
    //     return content.toString();
    //
    // }
}
